home *** CD-ROM | disk | FTP | other *** search
/ Aminet 20 / Aminet 20 (1997)(GTI - Schatztruhe)[!][Aug 1997].iso / Aminet / dev / debug / MemSniff.lha / Memsniff / MemSniff.doc < prev    next >
Text File  |  1997-05-25  |  9KB  |  254 lines

  1. Short:    Mungwall & Enforcer DB tool w/o MMU
  2. Uploader: thor@einstein.math.tu-berlin.de
  3. Author:   thor@einstein.math.tu-berlin.de
  4. Type:     dev/debug
  5.  
  6. _____________________________________________________________________________
  7.  
  8. The memsniff release 1.09 was broken, please upgrade to 1.10.
  9. Read the "bugreport" to find out more about the problems that caused the
  10. mess.
  11. _____________________________________________________________________________
  12.  
  13.                         The THOR-Software Licence
  14.  
  15.  
  16. This License applies to the computer programs known as "MemSniff".
  17. The "Program", below, refers to such program.
  18.  
  19.  
  20. The programs and files in this distribution are freely distributable
  21. under the restrictions stated below, but are also Copyright (c)
  22. Thomas Richter.
  23.  
  24.  
  25. Distribution of the Program by a commercial organization without written
  26. permission from the author to any third party is prohibited if any payment
  27. is made in connection with such distribution, whether directly
  28. (as in payment for a copy of the Program) or indirectly (as in payment
  29. for some service related to the Program, or payment for some product
  30. or service that includes a copy of the Program "without charge";
  31. these are only examples, and not an exhaustive enumeration of prohibited
  32. activities). However, the following methods of distribution involving
  33. payment shall not in and of themselves be a violation of this restriction:
  34.  
  35.  
  36. (i) Posting the Program on a public access information storage and
  37. retrieval service for which a fee is received for retrieving information
  38. (such as an on-line service), provided that the fee is not
  39. content-dependent (i.e., the fee would be the same for retrieving the same
  40. volume of information consisting of random data).
  41.  
  42.  
  43.  
  44. (ii) Distributing the Program on a CD-ROM, provided that the files
  45. containing the Program are reproduced entirely and verbatim on such
  46. CD-ROM, and provided further that all information on such CD-ROM be
  47. redistributable for non-commercial purposes without charge.
  48.  
  49.  
  50.  
  51. Everything in this distribution must be kept together, in original
  52. and unmodified form.
  53.  
  54.  
  55.  
  56.  
  57. Limitations.
  58.  
  59. THE PROGRAM IS PROVIDED TO YOU "AS IS," WITHOUT WARRANTY. THERE IS NO
  60. WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
  61. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  62. PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE
  63. RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
  64. THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
  65. SERVICING, REPAIR OR CORRECTION.
  66.  
  67.  
  68.  
  69. IF YOU DO NOT ACCEPT THIS LICENCE, YOU MUST DELETE ALL FILES CONTAINED IN
  70. THIS ARCHIVE.
  71.  
  72. _____________________________________________________________________________
  73.  
  74. Purpose of this program:
  75.  
  76. This program finds illegal memory changes by continously checking the free
  77. memory. It also protects the memory allocation functions in a mungwall like
  78. way. An exteral terminal or a interal low-level-debugger (like COP from the
  79. same author) is recommended, but not needed.
  80. MemSniff is not a Enforcer-replacement cause you can't replace the full
  81. functionality of a MMU, but it does everything possible to find memory 
  82. violations.
  83.  
  84. It does not:
  85. -protect memory already allocated, since this is not possible without a MMU
  86.  
  87. Since this memory checking is a bit tricky, there ARE KNOWN incompatibilities.
  88. DO NOT RUN MemSniff permanently, cause it slows down your system considerably
  89. and reduces the size of the available memory up to the half!
  90.  
  91. Known incompatibilities:
  92.  
  93. -Does not work well with memory defraction utilities, like PoolMem from
  94. the same author.
  95. -Does not work well with the SaferPatches utility of the same author, unless
  96. you install SaferPatches with a special option.
  97.  
  98.  
  99.  
  100. Theory of operation:
  101.  
  102. On memory allocation, if the memory is allocated without asking to clear it,
  103. the addresses will be filled with a non-zero bit pattern. An additional wall
  104. of memory around the allocated memory will be allocated as well, and it is
  105. watched if this wall changes. This part of the operation is similar to the
  106. well-known mungwall tool.
  107.  
  108. It keeps the names of the allocating tasks on request, to see if a task
  109. failed to free some memory. It remembers on request the exact # of bytes
  110. when memory gets allocated and complains if a different size gets freed.
  111.  
  112. It checks for stack overflow on request. However, this may cause unnecessary
  113. warnings with the multi-threaded filing systems.
  114.  
  115. It checks for consistency of the memory lists.
  116.  
  117. It splits on request the total available memory in two parts, continously
  118. giving one to the system and checking the other for illegal changes. Free
  119. memory is filled with a special pattern which is checked. Thus MemSniff
  120. will find invalid memory changes in the free memory, but does neither
  121. catch changes in allocated memory nor catches reads of invalid addresses.
  122. This is not possible without a MMU or changeing the source code of the
  123. program to debug. Special debug libraries are available for this purpose 
  124. on the aminet.
  125.  
  126.  
  127. Installing MemSniff:
  128.  
  129. Run MemSniff in your startup-sequence, whereever you want to start the
  130. checking.
  131.  
  132.  
  133. Command line options:
  134.  
  135. TASK:
  136. If you want to check a special task, give the name of it here. If the task 
  137. is not running, MemSniff will stop checking the memory to reduce the needed
  138. CPU time.
  139.  
  140. PRI:
  141. Priority of the checking supervisor task. This should be 0 or below, DO NOT
  142. CHOOSE HIGHER PRIORITIES WITHOUT GOOD REASON. Since the supervisor is
  143. continously running, high priorities will block other tasks from running.
  144.  
  145. STACK:
  146. Check if the stackpointer of all tasks are within the ranges given in the
  147. task structure.
  148.  
  149. Caveats:
  150. -This cannot catch short stack overflows, since not every instruction will
  151. be watched.
  152. -The filing system uses mutliple stacks for multiple threads it supports.
  153. It does not setup the stack ranges in the task structure and will cause
  154. MemSniff warnings. This is normal!
  155.  
  156.  
  157. CON:
  158. Continously check the consistency of the memory lists.
  159.  
  160.  
  161. DEBUG:
  162. Run the system debugger on failure. This will usually be the RomWack or
  163. (starting with 3.0) SAD. If you installed COP, this debugger will be started.
  164.  
  165.  
  166. PICKY:
  167. If the size given to FreeMem does not exactly match the size of AllocMem,
  168. MemSniff will be picky and complain. Usually this checking is done only up 
  169. to a multiple of eight bytes.
  170.  
  171. Caveats:
  172. The layers.library illegaly frees memory chunks in a different size than
  173. allocated. This is known to MemSniff, and it does disable the check for
  174. layers.library calls.
  175.  
  176.  
  177. PRESIZE:
  178. Specify the size of the mungwall zone prior to the allocated memory chunk.
  179. This will protect memory from illegaly modifying addresses smaller than
  180. the allocated. Defaults to 32 bytes.
  181.  
  182.  
  183. POSTSIZE:
  184. Select the size of the mungwall behind allocated memory. This will protect
  185. overflows of data into nonallocated mem.
  186.  
  187.  
  188. FILLCHAR:
  189. Specify the byte which is used to build the wall. -1, which is the default,
  190. will modify this byte from allocation to allocation.
  191.  
  192.  
  193. NAMETAG:
  194. Keep the names of all tasks that allocated memory, together with their names.
  195.  
  196. Caveats:
  197. This costs a lot of additional memory.
  198.  
  199.  
  200.  
  201. SHOWFAIL:
  202. Print warning if a memory allocation failed.
  203.  
  204.  
  205. SERIAL:
  206. Do not print MemSniff messages to the console it has been started from, but
  207. send them to a terminal connected to the serial port. The setting is
  208. 9600 baud, 8 bit, 1 stop bit, usual ascii will be used. Terminal programs
  209. are available on the net, the tiny Terminal program in the COP package
  210. will suffer, but you also need a second computer (Amiga prefered) and a null
  211. modem connector to run it.
  212.  
  213.  
  214.  
  215. MEMLIST:
  216. Print the position and size of each allocated memory block known to MemSniff,
  217. together with the name of the task it allocated. To make this working, 
  218. another copy of MemSniff must be running, and this copy must have been 
  219. started with the option NAMETAG. If an argument is supplied, only the
  220. memory allocated by this task is shown.
  221.  
  222. Caveats:
  223. This list is usally VERY LONG. It is recommended that you specify a task
  224. argument.
  225.  
  226.  
  227.  
  228. TO STOP MEMSNIFF:
  229. Send a break-C signal to the memsniff task. Can be done with Ctrl-C if
  230. MemSniff has been started within a console window, or with the break
  231. command in C:. Can also be done with the COP command TASK.S
  232.  
  233.  
  234. VECTORS:
  235. Check the low memory size for spurious changes.
  236.  
  237.  
  238. For more information, bug reports, flames.... contact the author at:
  239.  
  240. thor@einstein.math.tu-berlin.de
  241.  
  242.  
  243. For more fine THOR-Software programs, 
  244. Wisit the Web at: http://www.math.tu-berlin.de/~thor/thor/index.html
  245.  
  246.  
  247. Greetings, happy debugging,
  248.  
  249.     Thomas.
  250.  
  251.  
  252. Warning: Debugging after 3 a.m. may cnsiderdfd trn dwn hl&/*@#
  253.  
  254.